#include <linux/cdev.h>
#include <linux/device.h>
#include <linux/mutex.h>
#include <linux/atomic.h>
#include <asm/io.h>
#include <linux/of.h> 		  // 设备树 

// GPIO1_4 红灯
// GPIO4_20 绿灯
// GPIO4_19 蓝灯

#define LED_ON	0
#define LED_OFF 1

#define READ_PIN_NAME "read_pin"
#define GREEN_PIN_NAME "green_pin"
#define BLUE_PIN_NAME "blue_pin"

// 设备结构体
struct my_led_dev {
	struct cdev cdev;  // 字符设备结构体
	struct device_node* node; // rgb_led设备树节点指针
	int r_gpio;  // 红色led引脚的GPIO编号
	int g_gpio;  // 绿色led引脚的GPIO编号
	int b_gpio;  // 蓝色led引脚的GPIO编号
	char r_name[12];  // 红色led引脚的名字
	char g_name[12];  // 绿色led引脚的名字
	char b_name[12];  // 蓝色led引脚的名字
	int r_status;     // 红色led状态，0亮，1灭
	int g_status;	  // 绿色led状态，0亮，1灭
	int b_status;	  // 蓝色led状态，0亮，1灭
	dev_t devno;  // 设备号
	struct class* my_led_class;
	struct device* my_led_device;
    struct mutex mutex;  // 用于同步的互斥体
	unsigned int r_on_cnt; // 红色led亮的次数
	unsigned int g_on_cnt; // 红色led亮的次数
	unsigned int b_on_cnt; // 红色led亮的次数
};